[アップデート] より低コストにDR対策できるかも!?DynamoDB がテーブルバックアップの別リージョンへのリストアをサポートしました!
先日のアップデートで、DynamoDB のテーブルバックアップを他のリージョンにリストアできるようになりました!
何が嬉しいのか
従来、DynamoDB における DR および BCP 対策としてはグローバルテーブルを使うことで、マルチリージョン、マルチマスターのデータベースを構築することが可能でした。アクティブ/アクティブのような構成を希望される場合はグローバルテーブルで良いのですが、数時間のダウンタイムが許容でき、障害時のみ別リージョンを使えれば良い、というような要件においては少々贅沢な構成となっていました。(グローバルテーブルの場合、レプリカ数分の Write キャパシティユニット料金+データ転送料金が必要となります)
今回のアップデートによって、先述のような数時間のダウンタイムが許容される DR および BCP 要件においては、従来に比べて低コストに実現することが可能となりました。
対応リージョン
DynamoDB のバックアップおよびリストアがサポートされているすべてのリージョンで利用可能
やってみる
それでは、やってみましょう。
ポイントインタイムリカバリの有効化
今回はポイントインタイムリカバリ(PITR)を使って、検証します。PITR だけでなく、オンデマンドバックアップでも利用可能です。
まず、DynamoDB の管理コンソールを開きます。東京リージョンには、以下のようなアイテムが入ったテーブルが存在します。
[バックアップ] タブを開き、ポイントインタイムリカバリ(PITR)が無効になっている場合は [有効化] をクリックします。
確認画面が表示されますので、[有効化]をクリックします。
特定時点への復元(別リージョンへ)
[バックアップ] タブを開き、[特定時点への復元] をクリックします。
[新しいテーブル名] および [復元日時] を指定します。今回はバージニアリージョンにリストアしたいので、判りやすく Virginia-table
としました。セカンダリインデックスが不要な場合は、[セカンダリインデックスなしで復元] を選択することで、より高速かつコストを押さえて復元することが出来ます。
復元するリージョンが選択できるようになっていますので、[クロスリージョン] を選択し、復元先のリージョンを指定します。また、暗号化タイプを変更することも出来るようになっています。今回はデフォルトキーのまま、復元したいと思います。CLI からリストアする場合は他にも「課金モード」や「プロビジョンドスループット」なども上書きすることができます。詳細は公式ガイドを参照ください。
内容を確認し、[テーブルの復元] をクリックし、復元します。
「数時間かかることがある」 とのメッセージがありましたが、今回のケースではデータ量が極少なこともあり、10 分弱で完了しました。バージニアリージョンに復元された Virginia-table
を確認してみると
東京リージョンと同様の内容であることが確認できましたね。
簡単ではありますが、検証は以上です。
注意点
グローバルテーブルの場合、レプリカが分離されたり障害等によりレイテンシーが遅延する場合、正常なリージョンにリクエストがリダイレクトされますが、今回の方式で別リージョンを利用する場合は、当然ですがアプリケーション側で使用するリージョンの指定を変更する対応が必要となります。
さいごに
グローバルテーブルのようなリッチな構成を望まない要件において、低コストに DR や BCP 対策が実現できるようになりました!
現在、それほどリッチな要件を求めているわけでは無いにもかかわらず、グローバルテーブルをお使いになられている場合、バックアップ/リストア方式への見直しを検討されてみてはいかがでしょうか。
以上!大阪オフィスの丸毛(@marumo1981)でした!